#include <stdio.h>

// 当我们以下面的方式执行程序时
//   ./a.out hello 123 beijing

// 相当于产生了一个指针数组
//   const char *s[4] = {"./a.out", "hello", "123", "beijing"};
// 当执行程序时 相当于操作系统调用了我们的main函数 并给我们的main函数传参
// 调用时  main(4, s);

// 此处的 argc 表示执行程序时 命令行的参数的个数(包括可执行文件名)
// 此处的 argv 表示执行程序时 命令行传递的参数的值
//     他是一个指针(这里是一个自注释的写法)，
//     表示想要一个 const char * 类型的指针数组的首地址
int main(int argc, const char *argv[])
{
	// 参数个数
	printf("argc = %d\n", argc);

	// 参数的值
	//printf("%s\n", argv[0]); // ./a.out		// 对
	//printf("%s\n", *argv); // ./a.out			// 对
	printf("argv[0] = %s\n", argv[0]);		// ./a.out
	printf("argv[1] = %s\n", argv[1]);		// hello
	printf("*(argv+2) = %s\n", *(argv+2));	// 123
	printf("*(argv+3) = %s\n", *(argv+3));	// beijing

	printf("--------------------------------\n");

	// 遍历所有参数
	for(int i = 0; i < argc; i++){
		printf("%s\n", argv[i]);
	}
	
	return 0;
}
